/*
 *
 * Copyright 2021-2025 Software Radio Systems Limited
 *
 * This file is part of srsRAN.
 *
 * srsRAN is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of
 * the License, or (at your option) any later version.
 *
 * srsRAN is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * A copy of the GNU Affero General Public License can be found in
 * the LICENSE file in the top-level directory of this distribution
 * and at http://www.gnu.org/licenses/.
 *
 */

#pragma once

// This file was generated using the following MATLAB class on 29-08-2024 (seed 0):
//   + "srsPDSCHProcessorUnittest.m"

#include "../../../support/resource_grid_test_doubles.h"
#include "srsran/phy/upper/channel_processors/pdsch/pdsch_processor.h"
#include "srsran/ran/precoding/precoding_codebooks.h"
#include "srsran/support/file_vector.h"

namespace srsran {

/// Resource Grid entry.
using rg_entry = resource_grid_writer_spy::expected_entry_t;

struct test_case_context {
  unsigned               rg_nof_rb;
  unsigned               rg_nof_symb;
  pdsch_processor::pdu_t pdu;
};

struct test_case_t {
  test_case_context     context;
  file_vector<uint8_t>  sch_data;
  file_vector<rg_entry> grid_expected;
};

static const std::vector<test_case_t> pdsch_processor_test_data = {
    // clang-format off
  {{26, 14, {std::nullopt, {1, 20}, 59859, 25, 1, cyclic_prefix::NORMAL, {{modulation_scheme::QPSK, 0}}, 647, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 6392, 0, 2, rb_allocation::make_type1(24, 1), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{1, 26, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 26, 2, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 26, 2, {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(4))}}, {"test_data/pdsch_processor_test_input_transport_block0.dat"}, {"test_data/pdsch_processor_test_output_grid0.dat"}},
  {{26, 14, {std::nullopt, {0, 10}, 25542, 25, 1, cyclic_prefix::NORMAL, {{modulation_scheme::QPSK, 0}}, 247, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, dmrs_type::TYPE1, 26470, 0, 2, rb_allocation::make_type1(23, 2), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{1, 26, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 26, 2, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 26, 2, {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(1))}}, {"test_data/pdsch_processor_test_input_transport_block1.dat"}, {"test_data/pdsch_processor_test_output_grid1.dat"}},
  {{26, 14, {std::nullopt, {1, 4}, 42422, 25, 1, cyclic_prefix::NORMAL, {{modulation_scheme::QAM16, 0}}, 556, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, dmrs_type::TYPE1, 47254, 1, 2, rb_allocation::make_type1(2, 3), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{1, 26, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 26, 2, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 26, 2, {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(3))}}, {"test_data/pdsch_processor_test_input_transport_block2.dat"}, {"test_data/pdsch_processor_test_output_grid2.dat"}},
  {{26, 14, {std::nullopt, {0, 8}, 15757, 25, 1, cyclic_prefix::NORMAL, {{modulation_scheme::QAM16, 0}}, 701, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 55001, 1, 2, rb_allocation::make_type1(14, 5), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{1, 26, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 26, 2, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 26, 2, {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(2))}}, {"test_data/pdsch_processor_test_input_transport_block3.dat"}, {"test_data/pdsch_processor_test_output_grid3.dat"}},
  {{26, 14, {std::nullopt, {1, 4}, 2632, 25, 1, cyclic_prefix::NORMAL, {{modulation_scheme::QAM64, 0}}, 238, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 23665, 1, 2, rb_allocation::make_type1(18, 7), 2, 12, ldpc_base_graph_type::BG1, units::bytes(159749), {{1, 26, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 26, 2, {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 26, 2, {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(3))}}, {"test_data/pdsch_processor_test_input_transport_block4.dat"}, {"test_data/pdsch_processor_test_output_grid4.dat"}},
  {{26, 14, {std::nullopt, {0, 4}, 52060, 25, 1, cyclic_prefix::NORMAL, {{modulation_scheme::QAM64, 0}}, 909, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 9339, 1, 2, rb_allocation::make_type1(0, 6), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{1, 26, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 26, 2, {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 26, 2, {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(2))}}, {"test_data/pdsch_processor_test_input_transport_block5.dat"}, {"test_data/pdsch_processor_test_output_grid5.dat"}},
  {{26, 14, {std::nullopt, {1, 3}, 22295, 25, 1, cyclic_prefix::NORMAL, {{modulation_scheme::QAM256, 0}}, 335, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 40302, 1, 2, rb_allocation::make_type1(16, 7), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{1, 26, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 26, 2, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 26, 2, {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(3))}}, {"test_data/pdsch_processor_test_input_transport_block6.dat"}, {"test_data/pdsch_processor_test_output_grid6.dat"}},
  {{26, 14, {std::nullopt, {1, 17}, 28483, 25, 1, cyclic_prefix::NORMAL, {{modulation_scheme::QAM256, 0}}, 524, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 34372, 0, 2, rb_allocation::make_type1(7, 13), 2, 12, ldpc_base_graph_type::BG1, units::bytes(159749), {{1, 26, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 26, 2, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 26, 2, {0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(4))}}, {"test_data/pdsch_processor_test_input_transport_block7.dat"}, {"test_data/pdsch_processor_test_output_grid7.dat"}},
  {{54, 14, {std::nullopt, {1, 14}, 24782, 52, 2, cyclic_prefix::NORMAL, {{modulation_scheme::QPSK, 0}}, 782, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 3629, 0, 2, rb_allocation::make_type1(29, 10), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{2, 54, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {3, 54, 2, {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 54, 2, {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(3))}}, {"test_data/pdsch_processor_test_input_transport_block8.dat"}, {"test_data/pdsch_processor_test_output_grid8.dat"}},
  {{54, 14, {std::nullopt, {1, 4}, 6544, 52, 2, cyclic_prefix::NORMAL, {{modulation_scheme::QPSK, 0}}, 761, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 11194, 1, 2, rb_allocation::make_type1(27, 16), 2, 12, ldpc_base_graph_type::BG1, units::bytes(159749), {{2, 54, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {3, 54, 2, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 54, 2, {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(4))}}, {"test_data/pdsch_processor_test_input_transport_block9.dat"}, {"test_data/pdsch_processor_test_output_grid9.dat"}},
  {{54, 14, {std::nullopt, {1, 7}, 15603, 52, 2, cyclic_prefix::NORMAL, {{modulation_scheme::QAM16, 0}}, 149, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, dmrs_type::TYPE1, 52284, 1, 2, rb_allocation::make_type1(45, 4), 2, 12, ldpc_base_graph_type::BG1, units::bytes(159749), {{2, 54, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {3, 54, 2, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 54, 2, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(4))}}, {"test_data/pdsch_processor_test_input_transport_block10.dat"}, {"test_data/pdsch_processor_test_output_grid10.dat"}},
  {{54, 14, {std::nullopt, {1, 2}, 11901, 52, 2, cyclic_prefix::NORMAL, {{modulation_scheme::QAM16, 0}}, 576, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, dmrs_type::TYPE1, 8145, 1, 2, rb_allocation::make_type1(27, 15), 2, 12, ldpc_base_graph_type::BG1, units::bytes(159749), {{2, 54, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {3, 54, 2, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 54, 2, {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(2))}}, {"test_data/pdsch_processor_test_input_transport_block11.dat"}, {"test_data/pdsch_processor_test_output_grid11.dat"}},
  {{54, 14, {std::nullopt, {1, 12}, 52353, 52, 2, cyclic_prefix::NORMAL, {{modulation_scheme::QAM64, 0}}, 228, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 3202, 1, 2, rb_allocation::make_type1(21, 23), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{2, 54, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {3, 54, 2, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 54, 2, {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(2))}}, {"test_data/pdsch_processor_test_input_transport_block12.dat"}, {"test_data/pdsch_processor_test_output_grid12.dat"}},
  {{54, 14, {std::nullopt, {1, 0}, 13972, 52, 2, cyclic_prefix::NORMAL, {{modulation_scheme::QAM64, 0}}, 586, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 2299, 0, 2, rb_allocation::make_type1(38, 5), 2, 12, ldpc_base_graph_type::BG1, units::bytes(159749), {{2, 54, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {3, 54, 2, {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 54, 2, {0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(4))}}, {"test_data/pdsch_processor_test_input_transport_block13.dat"}, {"test_data/pdsch_processor_test_output_grid13.dat"}},
  {{54, 14, {std::nullopt, {0, 7}, 45487, 52, 2, cyclic_prefix::NORMAL, {{modulation_scheme::QAM256, 0}}, 879, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, dmrs_type::TYPE1, 55393, 1, 2, rb_allocation::make_type1(17, 17), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{2, 54, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {3, 54, 2, {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 54, 2, {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(3))}}, {"test_data/pdsch_processor_test_input_transport_block14.dat"}, {"test_data/pdsch_processor_test_output_grid14.dat"}},
  {{54, 14, {std::nullopt, {1, 19}, 4550, 52, 2, cyclic_prefix::NORMAL, {{modulation_scheme::QAM256, 0}}, 685, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 15237, 0, 2, rb_allocation::make_type1(51, 1), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{2, 54, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {3, 54, 2, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {2, 54, 2, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(2))}}, {"test_data/pdsch_processor_test_input_transport_block15.dat"}, {"test_data/pdsch_processor_test_output_grid15.dat"}},
  {{106, 14, {std::nullopt, {1, 6}, 22402, 106, 0, cyclic_prefix::NORMAL, {{modulation_scheme::QPSK, 0}}, 476, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, dmrs_type::TYPE1, 54514, 0, 2, rb_allocation::make_type1(66, 10), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{0, 106, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 106, 2, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {0, 106, 2, {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(4))}}, {"test_data/pdsch_processor_test_input_transport_block16.dat"}, {"test_data/pdsch_processor_test_output_grid16.dat"}},
  {{106, 14, {std::nullopt, {1, 2}, 26011, 106, 0, cyclic_prefix::NORMAL, {{modulation_scheme::QPSK, 0}}, 740, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 8417, 0, 2, rb_allocation::make_type1(99, 3), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{0, 106, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 106, 2, {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {0, 106, 2, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(3))}}, {"test_data/pdsch_processor_test_input_transport_block17.dat"}, {"test_data/pdsch_processor_test_output_grid17.dat"}},
  {{106, 14, {std::nullopt, {1, 7}, 28694, 106, 0, cyclic_prefix::NORMAL, {{modulation_scheme::QAM16, 0}}, 328, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 61255, 1, 2, rb_allocation::make_type1(67, 10), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{0, 106, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 106, 2, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {0, 106, 2, {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(3))}}, {"test_data/pdsch_processor_test_input_transport_block18.dat"}, {"test_data/pdsch_processor_test_output_grid18.dat"}},
  {{106, 14, {std::nullopt, {0, 7}, 9203, 106, 0, cyclic_prefix::NORMAL, {{modulation_scheme::QAM16, 0}}, 110, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, dmrs_type::TYPE1, 65010, 1, 2, rb_allocation::make_type1(50, 33), 2, 12, ldpc_base_graph_type::BG2, units::bytes(159749), {{0, 106, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 106, 2, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {0, 106, 2, {0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(1))}}, {"test_data/pdsch_processor_test_input_transport_block19.dat"}, {"test_data/pdsch_processor_test_output_grid19.dat"}},
  {{106, 14, {std::nullopt, {0, 6}, 24678, 106, 0, cyclic_prefix::NORMAL, {{modulation_scheme::QAM64, 0}}, 531, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 37945, 1, 2, rb_allocation::make_type1(71, 11), 2, 12, ldpc_base_graph_type::BG1, units::bytes(159749), {{0, 106, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 106, 2, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {0, 106, 2, {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(4))}}, {"test_data/pdsch_processor_test_input_transport_block20.dat"}, {"test_data/pdsch_processor_test_output_grid20.dat"}},
  {{106, 14, {std::nullopt, {1, 18}, 9579, 106, 0, cyclic_prefix::NORMAL, {{modulation_scheme::QAM64, 0}}, 449, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, dmrs_type::TYPE1, 22633, 0, 2, rb_allocation::make_type1(20, 20), 2, 12, ldpc_base_graph_type::BG1, units::bytes(159749), {{0, 106, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 106, 2, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {0, 106, 2, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(1))}}, {"test_data/pdsch_processor_test_input_transport_block21.dat"}, {"test_data/pdsch_processor_test_output_grid21.dat"}},
  {{106, 14, {std::nullopt, {1, 18}, 32285, 106, 0, cyclic_prefix::NORMAL, {{modulation_scheme::QAM256, 0}}, 131, pdsch_processor::pdu_t::CRB0, {0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0}, dmrs_type::TYPE1, 11781, 0, 2, rb_allocation::make_type1(11, 31), 2, 12, ldpc_base_graph_type::BG1, units::bytes(159749), {{0, 106, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 106, 2, {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {0, 106, 2, {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(3))}}, {"test_data/pdsch_processor_test_input_transport_block22.dat"}, {"test_data/pdsch_processor_test_output_grid22.dat"}},
  {{106, 14, {std::nullopt, {1, 3}, 7854, 106, 0, cyclic_prefix::NORMAL, {{modulation_scheme::QAM256, 0}}, 980, pdsch_processor::pdu_t::PRB0, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, dmrs_type::TYPE1, 3160, 1, 2, rb_allocation::make_type1(30, 60), 2, 12, ldpc_base_graph_type::BG1, units::bytes(159749), {{0, 106, 1, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {1, 106, 2, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, {0, 106, 2, {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}}, std::nullopt, 0, 0, precoding_configuration::make_wideband(make_identity(2))}}, {"test_data/pdsch_processor_test_input_transport_block23.dat"}, {"test_data/pdsch_processor_test_output_grid23.dat"}},
    // clang-format on
};

} // namespace srsran
